package com.it.bean;

import lombok.Data;


@Data
public class R<E> {

    private E data;
    private String msg;
    private Integer code;

    private R() {  // 构造私有化

    }

    public static <E> R<E> success() {
        R<E> r = new R<>();
        r.setData(null);
        r.setMsg(RestStatusEnum.SUCCESS.getMsg());
        r.setCode(RestStatusEnum.SUCCESS.getCode());

        return r;
    }

    public static <E> R<E> success(String msg) {
        R<E> r = new R<>();
        r.setData(null);
        r.setMsg(msg);
        r.setCode(RestStatusEnum.SUCCESS.getCode());

        return r;
    }

    public static <E> R<E> success(String msg, E data) {
        R<E> r = new R<>();
        r.setData(data);
        r.setMsg(RestStatusEnum.SUCCESS.getMsg());

        r.setCode(RestStatusEnum.SUCCESS.getCode());
        return r;
    }

    public static <E> R<E> success(String msg, E data, RestStatusEnum restStatusEnum) {
        R<E> r = new R<>();
        r.setData(data);
        r.setMsg(msg);
        r.setCode(restStatusEnum.getCode());
        return r;
    }

    //
    public static <E> R<E> error() {
        R<E> r = new R<>();
        r.setData(null);
        r.setMsg(RestStatusEnum.ERROR.getMsg());
        r.setCode(RestStatusEnum.ERROR.getCode());

        return r;
    }

    public static <E> R<E> error(String msg) {
        R<E> r = new R<>();
        r.setData(null);
        r.setMsg(msg);
//        r.setCode(RestStatus.OK);
        r.setCode(RestStatusEnum.ERROR.getCode());
        return r;
    }

    public static <E> R<E> error(String msg, E data) {
        R<E> r = new R<>();
        r.setData(data);
        r.setMsg(RestStatusEnum.ERROR.getMsg());

        r.setCode(RestStatusEnum.ERROR.getCode());
        return r;
    }

    public static <E> R<E> error(String msg, E data, RestStatusEnum restStatusEnum) {
        R<E> r = new R<>();
        r.setData(data);
        r.setMsg(msg);
        r.setCode(restStatusEnum.getCode());
        return r;
    }

    public static <E> R<E> error(RestStatusEnum restStatusEnum) {
        R<E> r = new R<>();
        r.setData(null);
        r.setMsg(restStatusEnum.getMsg());
        r.setCode(restStatusEnum.getCode());
        return r;
    }
}
